package utils

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"log"
	"os"
	"path/filepath"
)

func handleError(err error) {
	log.Printf("Error:", err)
	os.Exit(-1)
}

//	func ALiYunOssURL() string {
//		// Endpoint以杭州为例，其它Region请按实际情况填写。
//		endpoint := "http://oss-cn-guangzhou.aliyuncs.com"
//		// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
//		bucketName := "web-aliyuncjh"
//		// 创建OSSClient实例。
//		return fmt.Sprintf("%s.%s", bucketName, endpoint)
//	}
func ALiYunOssPut(LocalFile string) {
	// Endpoint以杭州为例，其它Region请按实际情况填写。
	endpoint := "http://oss-cn-guangzhou.aliyuncs.com"
	// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
	accessKeyId := "LTAI5t8GWQWFrvJLYWVpaxoE"
	accessKeySecret := "qpA8ha70fdN9qDRq8i6ZQlKaXuJ5Rx"
	bucketName := "web-aliyuncjh"
	// 创建OSSClient实例。
	// 检查本地文件是否存在
	if _, err := os.Stat(LocalFile); os.IsNotExist(err) {
		log.Fatalf("Local file does not exist: %s", LocalFile)
	}
	// <yourLocalFileName>由本地文件路径加文件名包括后缀组成，例如/users/local/myfile.txt。
	localFileName := LocalFile
	//创建OSSClient实例。
	client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
	if err != nil {
		handleError(err)
	}
	// 获取存储空间。
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		handleError(err)
	}
	options := []oss.Option{
		oss.ContentType("application/pdf"), // 设置Content-Type
		oss.ContentDisposition("inline"),   // 设置Content-Disposition为inline
	}
	// 上传文件。
	err = bucket.PutObjectFromFile(localFileName, localFileName, options...)
	if err != nil {
		handleError(err)
	}

}
func ALiYunOssPutImage(LocalFile string) {
	// Endpoint以杭州为例，其它Region请按实际情况填写。
	endpoint := "http://oss-cn-guangzhou.aliyuncs.com"
	// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
	accessKeyId := "LTAI5t8GWQWFrvJLYWVpaxoE"
	accessKeySecret := "qpA8ha70fdN9qDRq8i6ZQlKaXuJ5Rx"
	bucketName := "web-aliyuncjh"
	// 创建OSSClient实例。
	// 检查本地文件是否存在
	if _, err := os.Stat(LocalFile); os.IsNotExist(err) {
		log.Fatalf("Local file does not exist: %s", LocalFile)
	}

	// 创建OSSClient实例。
	client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
	if err != nil {
		log.Fatalf("Failed to create OSS client: %v", err)
	}

	// 获取存储空间。
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket: %v", err)
	}

	// 设置 OSS 中的 ObjectKey
	objectKey := "images/" + filepath.Base(LocalFile) // 例如：images/avatar.jpg

	// 上传文件。
	err = bucket.PutObjectFromFile(objectKey, LocalFile)
	if err != nil {
		log.Fatalf("Failed to upload file: %v", err)
	}

}
func ALiYunOssPutExcel(LocalFile string) {
	// Endpoint以杭州为例，其它Region请按实际情况填写。
	endpoint := "http://oss-cn-guangzhou.aliyuncs.com"
	// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
	accessKeyId := "LTAI5t8GWQWFrvJLYWVpaxoE"
	accessKeySecret := "qpA8ha70fdN9qDRq8i6ZQlKaXuJ5Rx"
	bucketName := "web-aliyuncjh"
	// 创建OSSClient实例。
	// 检查本地文件是否存在
	if _, err := os.Stat(LocalFile); os.IsNotExist(err) {
		log.Fatalf("Local file does not exist: %s", LocalFile)
	}
	// <yourLocalFileName>由本地文件路径加文件名包括后缀组成，例如/users/local/myfile.txt。
	localFileName := LocalFile
	//创建OSSClient实例。
	client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
	if err != nil {
		handleError(err)
	}
	// 获取存储空间。
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		handleError(err)
	}
	// 设置 OSS 中的 ObjectKey
	objectKey := "excel/" + filepath.Base(LocalFile) // 例如：images/avatar.jpg
	//	// 上传文件。
	err = bucket.PutObjectFromFile(objectKey, localFileName)
	if err != nil {
		handleError(err)
	}
}
func ALiYunOssGet(LocalFile string) {
	// Endpoint以杭州为例，其它Region请按实际情况填写。
	endpoint := "http://oss-cn-guangzhou.aliyuncs.com"
	// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
	accessKeyId := "LTAI5t8GWQWFrvJLYWVpaxoE"
	accessKeySecret := "qpA8ha70fdN9qDRq8i6ZQlKaXuJ5Rx"
	bucketName := "web-aliyuncjh"
	//创建OSSClient实例。
	client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
	if err != nil {
		handleError(err)
	}
	// 获取存储空间。
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		handleError(err)
	}
	//下载文件
	err = bucket.GetObjectToFile(LocalFile, LocalFile)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}
